home *** CD-ROM | disk | FTP | other *** search
/ Trading on the Edge / Trading On The Edge - CD-ROM Toolkit (Wayzata Technology)(2031)(1994).bin / pc / mac_file / vendor_d / neuralwa / nw2v50 / uio_if_i.c < prev    next >
Text File  |  1993-08-23  |  10KB  |  343 lines

  1. /* uio_if_i.c */
  2. /************************************************************************
  3.  * Copyright(C) 1987-1992 NeuralWare Inc                                *
  4.  * Penn Center West, IV-227, Pittsburgh, PA 15276                       *
  5.  * Telephone: (412) 787-8222    FAX: (412) 787-8220                     *
  6.  *                                                                      *
  7.  * All rights reserved.  No part of this program may be reproduced,     *
  8.  * stored in a retrieval system, or transmitted, in any form or by any  *
  9.  * means, electronic, mechanical, photocopying, recording or otherwise  *
  10.  * without the prior written permission of the copyright owner,         *
  11.  * NeuralWare, Inc.                                                     *
  12.  *                                                                      *
  13.  *                          PROPRIETARY NOTICE                          *
  14.  *                                                                      *
  15.  * This document is the property of NeuralWare, Inc. and contains       *
  16.  * trade-secrets and other proprietary information.  The information    *
  17.  * herein is reserved as proprietary to NeuralWare, and is not to be    *
  18.  * published, reproduced, copied, disclosed, used, or reverse           *
  19.  * engineered without the express written consent of a duly authorized  *
  20.  * representative of NeuralWare.                                        *
  21.  ************************************************************************
  22.  */
  23.  
  24. /*****************************************************************/
  25. /*                                                               */
  26. /*    uioif_i.c - UserIO InterFace platform Independent Code     */
  27. /*    Author: John C. Fairman           August 31, 1990          */
  28. /*    Copyright 1990 by Neuralware Inc.                          */
  29. /*                                                               */
  30. /*    $Author   :  $                                             */
  31. /*    $Date     :  $                                             */
  32. /*    $Source   :  $                                             */
  33. /*    $Revision :  $                                             */
  34. /*    $Log      :  $                                             */
  35. /*                                                               */
  36. /*****************************************************************/
  37.  
  38. #define UIO_SERVER             1
  39. #define SERVER_EMULATOR_FILE   2
  40. #define HOME_FOR_TRANSFER_DATA 1
  41. #define SKIP_COMPAT_DATA       1
  42. #if defined(_MSC_VER) || defined(__TURBOC__)
  43. #include <string.h>
  44. #endif
  45. #include "userutl.h"
  46. #include "uio_strc.h"
  47. #include "uio_tran.h"
  48. #include "uio_cmds.pro"
  49. #include "uio_tran.pro"
  50. #include "uio_if_i.pro"
  51.  
  52. #if defined(_MSC_VER) || defined(__TURBOC__)
  53. EXPORT VOID UIO_server_error(NINT);
  54. #endif
  55.  
  56. /*******************************************************************/
  57. /*   This function upacks the data transfer buffer and calls the   */
  58. /*   userio cmd.                                                  */
  59. /*******************************************************************/
  60.  
  61. /* FUNCTION */
  62. EXPORT VOID Handle_command()
  63. {
  64.   RPC_AREA_T *rpc;
  65.  
  66.  
  67.   rpc = &Data_transfer_ptr->RPC_area;
  68.   switch ((UNINT)rpc->request)
  69.   {
  70.     /* General Purpose Commands */
  71.     case CMD_INIT :
  72.     {
  73.       RPC_AREA_T *rpc;
  74.       INITCMD    *initcmd;
  75.       TEXT       process_name[FNALC];
  76.  
  77.       rpc = &Data_transfer_ptr->RPC_area;
  78.       initcmd = &rpc->all_arg_lists.initcmd;
  79.       strcpy(process_name, initcmd->filename);
  80.  
  81.       rpc->return_value.buffer_int = UIO_Init(process_name);
  82.     }
  83.     break;
  84.  
  85. /* */
  86.     case CMD_TERM :
  87.     {
  88.       RPC_AREA_T *rpc;
  89.       INITCMD    *initcmd;
  90.  
  91.       rpc = &Data_transfer_ptr->RPC_area;
  92.       initcmd = &rpc->all_arg_lists.initcmd;
  93.  
  94.  
  95.       /* addded NINT cast for MS-C 7.0; 4-28-93 mjs */
  96.       rpc->return_value.buffer_int = UIO_Term((NINT)initcmd->process_id);
  97.     }
  98.     break;
  99.  
  100.     case CMD_ATTENTION :
  101.  
  102.       rpc->return_value.buffer_int = UIO_Attention();
  103.  
  104.     break;
  105.  
  106.     /* Learning Commands */
  107.     case CMD_LEARN_START :
  108.  
  109.       rpc->return_value.buffer_int = UIO_Learn_Start();
  110.  
  111.     break;
  112.  
  113.     case CMD_LEARN_INPUT :
  114.     {
  115.       RPC_AREA_T *rpc;
  116.       DATACMD    *datacmd;
  117.       NINT       npes;
  118.  
  119.       rpc = &Data_transfer_ptr->RPC_area;
  120.       datacmd = &rpc->all_arg_lists.datacmd;
  121.       npes = (NINT)datacmd->npes;
  122.  
  123.       rpc->return_value.buffer_int =
  124.         UIO_Learn_Input((NINT)datacmd->layn, (NINT)datacmd->npes,
  125.         (SREAL *)(Data_transfer_ptr->data_area.data));
  126.  
  127.       Put_data_into_transfer_buffer(
  128.         (BUFFER_CHAR *)(Data_transfer_ptr->data_area.data),
  129.         npes, (NINT)DATA_TYPE);
  130.     }
  131.     break;
  132.  
  133.     case CMD_LEARN_OUTPUT :
  134.     {
  135.       RPC_AREA_T *rpc;
  136.       DATACMD    *datacmd;
  137.       NINT       npes;
  138.  
  139.       rpc = &Data_transfer_ptr->RPC_area;
  140.       datacmd = &rpc->all_arg_lists.datacmd;
  141.       npes = (NINT)datacmd->npes;
  142.  
  143.       rpc->return_value.buffer_int =
  144.         /* addded NINT casts for MS-C 7.0; 4-28-93 mjs */
  145.         UIO_Learn_Output((NINT)datacmd->layn, (NINT)datacmd->npes,
  146.         (SREAL *)(Data_transfer_ptr->data_area.data));
  147.  
  148.       Put_data_into_transfer_buffer(
  149.         (BUFFER_CHAR *)(Data_transfer_ptr->data_area.data),
  150.         npes, (NINT)DATA_TYPE);
  151.     }
  152.     break;
  153.  
  154. /* */
  155.     case CMD_LEARN_RESULT :
  156.     {
  157.       RPC_AREA_T *rpc;
  158.       DATACMD    *datacmd;
  159.  
  160.       rpc = &Data_transfer_ptr->RPC_area;
  161.       datacmd = &rpc->all_arg_lists.datacmd;
  162.  
  163.       rpc->return_value.buffer_int =
  164.         /* addded NINT casts for MS-C 7.0; 4-28-93 mjs */
  165.         UIO_Learn_Result((NINT)datacmd->layn, (NINT)datacmd->npes,
  166.         (SREAL *)(Data_transfer_ptr->data_area.data));
  167.     }
  168.     break;
  169.  
  170.     case CMD_LEARN_END :
  171.  
  172.       rpc->return_value.buffer_int = UIO_Learn_End();
  173.  
  174.     break;
  175.  
  176.  
  177.     /* Recall Commands */
  178.     case CMD_RECALL_START :
  179.  
  180.       rpc->return_value.buffer_int = UIO_Recall_Start();
  181.  
  182.     break;
  183.  
  184.     case CMD_READ :
  185.     {
  186.       RPC_AREA_T *rpc;
  187.       DATACMD    *datacmd;
  188.       NINT       npes;
  189.  
  190.       rpc = &Data_transfer_ptr->RPC_area;
  191.       datacmd = &rpc->all_arg_lists.datacmd;
  192.       npes = (NINT)datacmd->npes;
  193.  
  194.       rpc->return_value.buffer_int =
  195.         /* addded NINT casts for MS-C 7.0; 4-28-93 mjs */
  196.         UIO_Read((NINT)datacmd->layn, (NINT)datacmd->npes,
  197.         (SREAL *)(Data_transfer_ptr->data_area.data));
  198.       Put_data_into_transfer_buffer(
  199.         (BUFFER_CHAR*)(Data_transfer_ptr->data_area.data),
  200.         npes, (NINT)DATA_TYPE);
  201.     }
  202.     break;
  203.  
  204.     case CMD_WRITE :
  205.     {
  206.       RPC_AREA_T *rpc;
  207.       DATACMD    *datacmd;
  208.  
  209.       rpc = &Data_transfer_ptr->RPC_area;
  210.       datacmd = &rpc->all_arg_lists.datacmd;
  211.  
  212.       rpc->return_value.buffer_int =
  213.         /* addded NINT casts for MS-C 7.0; 4-28-93 mjs */
  214.         UIO_Write((NINT)datacmd->layn, (NINT)datacmd->npes,
  215.         (SREAL *)(Data_transfer_ptr->data_area.data));
  216.     }
  217.     break;
  218.  
  219. /* */
  220.     case CMD_WRITE_STEP :
  221.     {
  222.       RPC_AREA_T *rpc;
  223.       DATACMD    *datacmd;
  224.  
  225.       rpc = &Data_transfer_ptr->RPC_area;
  226.       datacmd = &rpc->all_arg_lists.datacmd;
  227.  
  228.       rpc->return_value.buffer_int =
  229.         /* addded NINT casts for MS-C 7.0; 4-28-93 mjs */
  230.         UIO_Write_Step((NINT)datacmd->layn, (NINT)datacmd->npes,
  231.         (SREAL *)(Data_transfer_ptr->data_area.data));
  232.     }
  233.     break;
  234.  
  235.     case CMD_RECALL_TEST :
  236.     {
  237.       RPC_AREA_T *rpc;
  238.       DATACMD    *datacmd;
  239.       NINT       npes;
  240.  
  241.       rpc = &Data_transfer_ptr->RPC_area;
  242.       datacmd = &rpc->all_arg_lists.datacmd;
  243.       npes = (NINT)datacmd->npes;
  244.  
  245.       rpc->return_value.buffer_int =
  246.         /* addded NINT casts for MS-C 7.0; 4-28-93 mjs */
  247.         UIO_Recall_Test((NINT)datacmd->layn, (NINT)datacmd->npes,
  248.         (SREAL *)(Data_transfer_ptr->data_area.data));
  249.  
  250.       Put_data_into_transfer_buffer(
  251.         (BUFFER_CHAR *)(Data_transfer_ptr->data_area.data),
  252.         npes, (NINT)DATA_TYPE);
  253.     }
  254.     break;
  255.  
  256.     case CMD_RECALL_END :
  257.  
  258.       rpc->return_value.buffer_int = UIO_Recall_End();
  259.  
  260.     break;
  261.  
  262.     /* Other Commands */
  263.     case CMD_INSTRUMENT :
  264.     {
  265.       RPC_AREA_T    *rpc;
  266.       INSTRUMENTCMD *instrumentcmd;
  267.  
  268.       rpc = &Data_transfer_ptr->RPC_area;
  269.       instrumentcmd = &rpc->all_arg_lists.instrumentcmd;
  270.  
  271.       rpc->return_value.buffer_int =
  272.         /* addded NINT casts for MS-C 7.0; 4-28-93 mjs */
  273.         UIO_Instrument((NINT)instrumentcmd->instrument_id,
  274.         (NINT)instrumentcmd->ndataelems,
  275.         (SREAL *)(Data_transfer_ptr->data_area.data));
  276.     }
  277.     break;
  278.  
  279.     case CMD_OBJFUNC :
  280.     {
  281.       RPC_AREA_T    *rpc;
  282.       OBJFUNCCMD    *objfunccmd;
  283.  
  284.       rpc = &Data_transfer_ptr->RPC_area;
  285.       objfunccmd = &rpc->all_arg_lists.objfunccmd;
  286.  
  287.       rpc->return_value.buffer_int =
  288.         UIO_ObjFunc((NINT)objfunccmd->eoeflag,
  289.                     (SREAL *)(Data_transfer_ptr->data_area.data));
  290.  
  291.       if (objfunccmd->eoeflag)
  292.          Put_data_into_transfer_buffer(
  293.             (BUFFER_CHAR*)(Data_transfer_ptr->data_area.data),
  294.              1, (NINT)DATA_TYPE);
  295.     }
  296.     break;
  297.  
  298.     case CMD_REWIND :
  299.  
  300.       rpc->return_value.buffer_int = UIO_Rewind();
  301.  
  302.     break;
  303.  
  304.     case CMD_EXPLAIN :
  305.     {
  306.       RPC_AREA_T *rpc;
  307.       DATACMD    *datacmd;
  308.  
  309.       rpc = &Data_transfer_ptr->RPC_area;
  310.       datacmd = &rpc->all_arg_lists.datacmd;
  311.  
  312.       rpc->return_value.buffer_int =
  313.         /* addded NINT casts for MS-C 7.0; 4-28-93 mjs */
  314.         UIO_Explain((NINT)datacmd->layn, (NINT)datacmd->npes,
  315.         (SREAL *)(Data_transfer_ptr->data_area.data));
  316.     }
  317.     break;
  318.  
  319. /* This can't ever happen!
  320.     case CMD_WRITE_VECTOR :
  321.  
  322.       UIO_Write_Vector();
  323.  
  324.     break;
  325. */
  326.  
  327.     default :
  328.  
  329.       UIO_server_error((NINT)UNKNOWN_COMMAND);
  330.   }
  331.  
  332. /* */
  333.   rpc->request = REQ_ACKNOWLEDGE;
  334.   Data_transfer_ptr->RPC_area.process_from_id = Process_id;
  335.   Data_transfer_ptr->RPC_area.process_to_id = HOST_PROCESS_ID;
  336.   if (UIO_error_value != 0)
  337.   {
  338.     rpc->request = (BUFFER_INT)UIO_error_value;
  339.     UIO_error_value = 0;
  340.   }
  341. }
  342.  
  343.